Learn To Solve Puzzles